<?php
class EditarExpedienteController extends JuridicoController
{
  public function __construct()
  {
    parent::__construct();
  }

  /**
   * Acción para editar/crear un expediente
   */
  public function index($expediente_id = 0)
  {
    $this->setSectionTitle('Editar expediente');

    try {
      // Obtener lista de documentos probatorios disponibles en base de datos
      $docs_probatorios = $this->JuridicoDB->spgetdocumentosp();
      // Obtener la lista de identificaciones (IFE, etc..)
      $identificaciones = $this->JuridicoDB->spgetidentificacion(array(0));
      // Obtener lista de municipios e ignorar el municipio #0
      $municipios = DGRC::reg_jal()->sp_ver_munpios();
      foreach($municipios as $i => $municipio){
        if($municipio['cve_munpio'] == 0){
          unset($municipios[$i]);
          break;
        }
      }

      // Ignorar las identificaciones que no tienen nombre (están mal en la tabla)
      foreach($identificaciones as $i => $id){
        if(trim($id[1]) == ''){ unset($identificaciones[$i]); }
      }

      /*
       * Cuando $expediente_id es == 0 entonces vamos a AGREGAR un nuevo expediente.
       * Cuando $expediente_id es != 0 entonces vamos a EDITAR un expediente.
       */
      settype($expediente_id, 'int');
      $Expediente = false;
      if($expediente_id > 0){
        $Expediente = $this->JuridicoDB->get_expediente($expediente_id);
        $Expediente->FechaRegistro = $this->expandDate($Expediente->fecha_registro);
      }

      $this->renderView(null, array(
        'Expediente' => $Expediente,
        'municipios' => $municipios,
        'docs_probatorios' => $docs_probatorios,
        'identificaciones' => $identificaciones,
      ));
    } catch (PDOException $e) {
      trigger_error('Ocurrió un error al cargar los catalogos de datos. ('
        . $e->getMessage() . ')'
        , E_USER_ERROR);
    }
  }

  public function ajaxGuardar()
  {
    /*
     * Validar todos los datos del expediente y generar el mensaje de error
     * en caso necesario, de lo contrario insertar los datos del expediente.
     */
    $_POST = array_map('trim', $_POST);

    // Valores de tipo entero
    settype($_POST['municipio'], 'int');
    settype($_POST['fecha_reg_dia'], 'int');
    settype($_POST['fecha_reg_mes'], 'int');
    settype($_POST['fecha_reg_anio'], 'int');

    // Array de objetos probatorios
    $docs_probatorios = json_decode($_POST['docs_probatorios_json']);

    // Nombre del solicitante
    if($_POST['solicitante_nombre'] == '' || $_POST['solicitante_ape_pat'] == ''){
      $this->setAjaxResponse('solicitante_nombre',
        'Introdúzca el nombre y primer apellido del solicitante.', true);
    
    // Folio de la solicitud de pago (no confundir con el folio de ya pagado)
    } elseif($_POST['folio_solicitud'] == '') {
      $this->setAjaxResponse('folio_solicitud',
        'Introdúzca el folio de solicitud de pago', true);

    // Matrimonio, nombre de el o la cónyuge
    } elseif(
      $_POST['tipo_extr']  == 'M' &&
      !($_POST['el_nombre'] != '' && $_POST['el_ape_pat'] != '') &&
      !($_POST['la_nombre'] != '' && $_POST['la_ape_pat'] != '')
      ) {
      $this->setAjaxResponse('el_nombre',
        'Introdúzca el nombre y primer apellido minimo de uno de los cónyuges.', true);  
    
    // No matrimonio, nombre de el registrado
    } elseif(
      $_POST['tipo_extr'] != 'M' &&
      ($_POST['nombre'] == '' || $_POST['ape_pat'] == '')
      ) {
      $this->setAjaxResponse('nombre',
        'Introdúzca el nombre y primer apellido del registrado', true);

    // Municipio y oficialia
    } elseif($_POST['municipio'] == 0){
      $this->setAjaxResponse('municipio',
        'Seleccione el municipio y oficialia', true);

    // Fecha de registro
    } elseif(
      !checkdate($_POST['fecha_reg_mes'], $_POST['fecha_reg_dia'],
        $_POST['fecha_reg_anio'])
      ) {
      $this->setAjaxResponse('fecha_reg_dia',
        'Introdúzca una fecha de registro válida', true);

    // Número de acta y libro
    } elseif(
      !($_POST['acta_origen']  != '' || $_POST['acta_archivo']  != '') ||
      !($_POST['libro_origen'] != '' || $_POST['libro_archivo'] != '')
      ) {
      $this->setAjaxResponse('acta_origen',
        'Introdúzca el número de acta y libro, ya sea de origen o archivo', true);

    // Resolucion
    } elseif($_POST['resolucion'] == '') {
      $this->setAjaxResponse('resolucion',
        'Introdúzca la resolución administrativa', true);

    // Documentos probatorios agregados
    } elseif(empty($docs_probatorios)) {
      $this->setAjaxResponse('dueno_doc_probatorio',
        'Faltan los documentos probatorios', true);

    } else {
      
      /*
       * Datos validados, es momento de guardar los datos del expediente
       */
      
      try {
        $this->JuridicoDB->spinsertarexpediente(array(
          $this->SignedUser->id,

        ));
      } catch (PDOException $e) {
        $this->setAjaxResponse(null, 'No se pudo guardar el expediente.', true);
      }

    }
  }

  /**
   * Recibe la solicitud para agregar un nuevo documento probatorio
   * en la base de datos
   */
  public function ajaxAgregarNuevoDocProbatorio()
  {
    try{
      $doc_probatorio_id = $this->JuridicoDB
        ->spinsertardocumentop(array($_POST['nuevo_doc_probatorio_nombre']));

      $this->setAjaxResponse(array(
        'id' => $doc_probatorio_id,
        'nombre' => $_POST['nuevo_doc_probatorio_nombre']
      ));
    }catch(PDOException $e){
      $this->setAjaxResponse(null,
        'No se pudo agregar el nuevo documento probatorio.', true);
    }
  }

  /**
   * Recibe la solicitud para agregar un tipo de identificacion
   */
  public function ajaxAgregarTipoIdentificacion()
  {
    try {
      $id_id = $this->JuridicoDB
        ->spinsertaridentificacion(array($_POST['tipo_identificacion']));
      $this->setAjaxResponse(array(
        'id' => $id_id,
        'nombre' => $_POST['tipo_identificacion']
      ));
    } catch (PDOException $e) {
      $this->setAjaxResponse(null,
        'No se pudo agregar el nuevo tipo de identificación.', true);
    }
  }
}
